import { z } from 'zod';

const namePattern = /^[a-zA-Z][a-zA-Z0-9_-]{1,49}$/;

export function getRoleFormSchema(mode = 'create') {
  return z.object({
    name:
      mode === 'create'
        ? z
            .string({ required_error: '角色标识为必填项' })
            .regex(namePattern, '只能包含字母、数字、下划线或连字符，需以字母开头')
        : z
            .string()
            .regex(namePattern, '只能包含字母、数字、下划线或连字符，需以字母开头'),
    displayName: z
      .string({ required_error: '角色名称为必填项' })
      .min(2, '角色名称至少需要2个字符')
      .max(100, '角色名称长度不能超过100个字符'),
    description: z
      .string()
      .max(2000, '角色描述长度不能超过2000个字符')
      .optional()
      .or(z.literal('')),
    sortOrder: z
      .number({ invalid_type_error: '排序值必须为数字' })
      .int('排序值必须为整数')
      .min(0, '排序值不能小于0')
      .max(9999, '排序值不能超过9999')
      .optional(),
    systemRole: z.boolean().optional(),
    permissionIds: z.array(z.number()).default([]),
  });
}


